package cliente.mediador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import servidor.dominio.Empleado;

import cliente.ClienteConection;
import cliente.Funciones;
import cliente.gui.*;
import cliente.mediador.MediadorModEmpleado;



import comun.dto.*;
import comun.iControl.*;

public class MediadorModificacionEmpleado implements ActionListener {
	private GUIModificarEmpleado guiModificar = null;
	public IControlEmpleado controlModEmpleado;
	public Funciones fun;


	public MediadorModificacionEmpleado() throws Exception{
		ClienteConection empleadoConexion=new ClienteConection();
		try{
			empleadoConexion.iniciar();
		}catch(Exception ex){
			ex.printStackTrace();
		}	       
		this.controlModEmpleado=empleadoConexion.getIControlEmpleado();
		guiModificar= new GUIModificarEmpleado();
		fun=new Funciones();
		guiModificar.setActionListeners(this);
		show();
	} 



	private void show() {  
		guiModificar.getIrCuil().setEnabled(false);
		guiModificar.show();
	}
	
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		try{
			if (source==guiModificar.getOpBusqueda()){
				int indiceOpcion=guiModificar.getOpBusqueda().getSelectedIndex();
				if (indiceOpcion==0){
				
					guiModificar.getIrCuil().setEnabled(false);
					guiModificar.getIrCuitEmp().setEnabled(true);
					guiModificar.getCuil().setText("");  
					guiModificar.setTablaEmpleado();
				}
				else{
					guiModificar.getIrCuitEmp().setEnabled(false);
					guiModificar.getIrCuil().setEnabled(true);
					guiModificar.getCuitEmpresa().setText("");
					guiModificar.setTablaEmpleado();
				}
			}
			else if(source==guiModificar.getIrCuitEmp()){
				guiModificar.setTablaEmpleado();
				String cuit=guiModificar.getCuitEmpresa().getText();
				if ((cuit.length()==0)|| (fun.cuitValido(cuit)==false)) {
					JOptionPane.showMessageDialog(new JFrame(),"El campo cuit de la empresa es vacio o no es correcto","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
					guiModificar.getCuitEmpresa().setText(guiModificar.getCuitEmpresa().getText());     
				}else if (!controlModEmpleado.existeEmpresa(cuit)){  
					JOptionPane.showMessageDialog(new JFrame(),"No Existe empresa Cargada en la Base de Datos Verifique el campo Cuil de Empresa","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
				}else{
				Vector<EmpleadoDTO> empleados=controlModEmpleado.getEmpleados(cuit);
				guiModificar.setTablaEmpleados(empleados);
				}
			}
			else if (source==guiModificar.getIrCuil()){
				guiModificar.setTablaEmpleado();
				String cuil=guiModificar.getCuil().getText();
				System.out.println("cuil "+ cuil);
				if ((cuil.length()==0)|| (fun.cuitValido(cuil)==false)) {
					JOptionPane.showMessageDialog(new JFrame(),"El campo cuil es vacio o no es correcto","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
					guiModificar.getCuil().setText(guiModificar.getCuil().getText());  
				}
				else if(!controlModEmpleado.existeEmpleado(cuil)){
					JOptionPane.showMessageDialog(new JFrame(),"No existe Empleado Cargado en la Base de Datos verifique el Cuil","CAMPO INCOMPLETO",JOptionPane.ERROR_MESSAGE);
					guiModificar.getCuil().setText(guiModificar.getCuil().getText()); 
					
				}else{
					Vector<EmpleadoDTO> empleados=controlModEmpleado.getEmpleadosCuil(cuil);
					guiModificar.setTablaEmpleados(empleados);
				}

			}
			else if (source==guiModificar.getModificar()){
				int fila=guiModificar.getTablaEmpleados().getSelectedRow();
			 
				if (fila==-1){
					JOptionPane.showMessageDialog(null, "Debe seleccionar el Empleado a Modificar");
				}else{
						String cuil=(String)guiModificar.getTablaEmpleados().getValueAt(fila, 2);
						Vector<EmpleadoDTO> empleado=controlModEmpleado.getEmpleadosCuil(cuil);
						MediadorModEmpleado emp= new MediadorModEmpleado(empleado);
			
				}
			}
			else if (source==guiModificar.getCancelar()){
				guiModificar.dispose();
			}

		}
		catch(Exception p){
			System.err.println("Caught Exception: " + p.getMessage());
		}
	}
}
